%% In dit bestand wordt er gekeken of het voordelig is om SVC's te plaatsen
%% op bepaalde bussen danwel lijnen parallel bij te trekken.

%%lijnfouten:
bussen_invoegen_14;
clear all;
load lijnfout;
load belastingsbussen;

%global PV;
%in lijnfout worden de dips op elke bus
%weergegeven ten gevolge van de fout op die lijn

%lijnfout | bus | diepte_voor
statcom_plaatsen = zeros(1000,4);
teller = 1;
verloop_dips = zeros(1000,1);
teller1 = 1;
teller_pv = aantal_PVbussen+1;
diepte_dip = zeros(size(dips_bussen_belasting,1),20);
%andere aanpak:
%overal een grote statcom plaatsen waar mogelijk en dan de dips testen

%statcoms toevoegen op bussen in de files van de lijnfouten.
for l = 1:20%aantal_lijnfouten

       
       diepte_dip(:,teller) = dips_bussen_belasting(:,4);
       bus_dip = dips_bussen_belasting(l,2);
       lijnfout_dip = l;%dips_bussen_belasting(l,1);
       
     
    
    Synbus_ok = 0;
    PVbus_ok = 0;
    
    filename = sprintf('bus%03d',lijnfout_dip);
    eval(filename);
    teller_pv = size(PV.con,1)+1;
    filename = [filename,'.m'];
    
    Statcom.con = [ ... 
    1           1          1            1            1           1           1          1             1;
    ];
            
    make_psatfile;
    
    %enkel een statcom plaatsen op bussen waar geen PV of Syn hangt.
    overeenkomst1 = ismember(Bus.con(:,1),PVbussen(:,1));
    overeenkomst2 = ismember(Bus.con(:,1),Synbussen(:,1));
    filename = sprintf('bus%03d',lijnfout_dip);
    filename = [filename,'.m'];
    teller1 = 1;
%     teller_pv = size(PV.con,1)+1;
    for ll = 1:(size(Bus.con,1)-1) %bus 15 is niet nodig!!!!!
        
        if (overeenkomst1(ll) == 0) && (overeenkomst2(ll) == 0)
           
                
                %eval(filename);
                
                %parameters statcom aanpassen!
               Statcom.con(teller1,1) = ll; 
               Statcom.con(teller1,2) = 1; 
               Statcom.con(teller1,3) = Bus.con(ll,2); 
               Statcom.con(teller1,4) = Line.con(1,5); 
               Statcom.con(teller1,5) = 50; 
               Statcom.con(teller1,6) = 0.1;
               Statcom.con(teller1,7) = 0.5;
               Statcom.con(teller1,8) = -0.5;
               Statcom.con(teller1,9) = 1;
%               
%             Svc.con =p [...
%                 bus_dip b Bus.con(bus_dip,2) 60 1 0.1 50 1 1 -1 1;
%                 ];
                %grootte = size(PV.con,1);
                PV.con(teller_pv,:) = PV.con(1,:);
                PV.con(teller_pv,1) = ll;
                PV.con(teller_pv,2) = PV.con(1,2);
                PV.con(teller_pv,3) = Bus.con(ll,2);
                PV.con(teller_pv,4) = 0;
                PV.con(teller_pv,5) = 1.04;
                PV.con(teller_pv,6) = 0.5;
                PV.con(teller_pv,7) = -0.4;
                PV.con(teller_pv,8) = 1.2;
                PV.con(teller_pv,9) = 0.8;
                PV.con(teller_pv,10) = 1;
                PV.con(teller_pv,11) = 1;

                make_psatfile;

              teller1 = teller1+1;
              teller_pv = teller_pv + 1;
              
              
        end  
    end
end

%loadflow berekeningen doen op de aangepaste files.
clear all;
belastingsbussen_14;
teller = 0;
verloop_dips = zeros(1000,3);
totaal_aantal_dips = zeros(1000,1);
dips_weg = zeros(100,2);
eind = 1000;%500;
aantal_b = 20;
teller_dips = 1;
dips_verloop = zeros(aantal_b,20);  %20 moet nog aangepast worden!!!!
begin = 1;

for l = begin:1% aantal lijnfouten bekijken

    teller_dips = 1;
    teller_onderbreking = 1;
    b = 2000;
    test = 0;
    %zolang er een onderbreking is wordt de hoeveelheid statcoms verminderd
   while test == 0
%         while b~=100%>900 
          %mogelijk om de vermogens telaten varieren, nu uitgeschakeld.  
        %for ll=1000:1000:9000
%             b = b-100;
%                 if teller ~= 1
                    filename = sprintf('bus%03d',l);
                    
                    if teller_onderbreking==1
                    eval(filename);
                    end
                    filename = [filename,'.m'];
% %                 end
                Fault.con(1,7) = 0.001;
                Fault.con(1,8) = 0.001;
                Statcom.con(:,2) = b;
                make_psatfile;
                lijnfout_14_index(l,l);
                temp = 0;
                temp2 = 0;
                
%                 if l == 1
%                     verloop_dips(1:size(verloop_dips,1),1) = 0;
%                     verloop_dips(1:size(verloop_dips,1),2) = 0;
%                     verloop_dips(1:size(verloop_dips,1),3) = 0;
%                 end
                if l~=begin
                    temp = aantal_dips;
                    temp2 = dips_verloop(aantal_b,l-1);
                    verloop_dips(temp2+1:size(verloop_dips,1),1) = 0;
                verloop_dips(temp2+1:size(verloop_dips,1),2) = 0;
                verloop_dips(temp2+1:size(verloop_dips,1),3) = 0;
                end
                dips_duur_type_alle_fouten(l,l);
                load lijnfout;
                
               %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                
                
                %KOSTEN BEREKENEN -> als parameters de sector en bus
                %meegeven en dan de kost als output van de functie.
                
                %kostenincidenten met index over welke bussen bekeken
                %moeten worden
                
                %som maken van de kosten verbonden aan elke bus
                %bepalen wat de statcom's kosten
                
                %beide optellen
                
                %totale kost gekend. -> opslaan voor elke iteratie van
                %aantal statcoms en vermogen van statcoms samen met de
                %lokatie van welke statcom waar staat.
                
                
                %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
             
                
                %zolang het lijnfout per lijnfout gebeurt werkt dit:)
                onderbreking = ismember(1,dips_bussen_belasting(:,4));
                test = 1;
                if onderbreking == 1
                   
                    filename = sprintf('bus%03d',l);
                    eval(filename);
                    filename = [filename,'.m'];
                    PV.con((teller_onderbreking+aantal_PVbussen),11) = 0;
                    teller_onderbreking = teller_onderbreking + 1;
                    Statcom2.con(1:(size(Statcom.con,1)-1),:) = Statcom.con(2:size(Statcom.con,1),:);
                    Statcom.con = [];
                    
                    Statcom.con = Statcom2.con;
                    
%                         fid=fopen(filename,'a');
%                         
%                         %print PV.con
%                         count = fprintf(fid, 'PV.con = [ ...\n');
%                         format = ['%4d ',repmat('%8.4g ',1,9),'%2u;\n'];
%                         count = fprintf(fid,format,PV.con');
%                         count = fprintf(fid,'   ];\n\n');
%                         
%                         %print Syn.con
%                         count = fprintf(fid, 'Statcom.con = [... \n');
%                         format = [repmat('%8.4g ',1,size(Statcom.con,2)),';\n'];
%                         count = fprintf(fid,format,Statcom.con');
%                 %         count = fprintf(fid,'\n');
%                         count = fprintf(fid,'   ];\n\n');
%                         fclose(fid);
                    make_psatfile;
                    
                    %duivelse PAUZE
                        pause(5);
                    test = 0;
                else
%                 verloop_dips(temp2+1+5*(teller_dips-1):temp2+aantal_dips+5*(teller_dips-1),1) = l;
%                 verloop_dips(temp2+1+5*(teller_dips-1):temp2+aantal_dips+5*(teller_dips-1),3) = dips_bussen_belasting(1:aantal_dips,4);
%                 verloop_dips(temp2+1+5*(teller_dips-1):temp2+aantal_dips+5*(teller_dips-1),2) = dips_bussen_belasting(1:aantal_dips,2);
                verloop_dips(temp2+1:temp2+aantal_dips,1) = l;
                verloop_dips(temp2+1:temp2+aantal_dips,3) = dips_bussen_belasting(1:aantal_dips,4);
                verloop_dips(temp2+1:temp2+aantal_dips,2) = dips_bussen_belasting(1:aantal_dips,2);
%                 
                %verloop_dips(,1) = dips_bussen_belasting(1:aantal_dips,4);
                dips_verloop(teller_dips,l) = aantal_dips;
                
                
%                 diepte_dip(:,teller) = dips_bussen_belasting(:,4);
                
                
                totaal_aantal_dips(teller_dips,1) = aantal_dips;
                teller_dips = teller_dips + 1;
                end
            if aantal_dips==0
                
                teller = teller+1;
                dips_weg(teller,1) = l;
                dips_weg(teller,2) = b;
                
%                 b = 0;
            end
            %enkel teller nog overhouden
    end
    
end

